//package com.inspur.edp.bef.dtgenerator.core.beActionAssemblerFactory;
//
//import com.inspur.edp.bef.bizentity.GspBizEntityObject;
//import com.inspur.edp.bef.bizentity.operation.BizAction;
//import com.inspur.edp.bef.bizentity.operation.BizOperation;
//import com.inspur.edp.bef.bizentity.operation.internalbeaction.IInternalBEAction;
//import com.inspur.edp.bef.dtgenerator.api.ApiHelper;
//import com.inspur.edp.bef.dtgenerator.core.BefCoreGenCtx;
//import com.inspur.edp.bef.spi.action.assembler.entityAssemblerFactory.AbstractActionAssemblerFactory;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.item.ClassGenerator;
//import com.inspur.edp.caf.generator.item.ClassGeneratorContext;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.cef.gencommon.MediateType;
//import com.inspur.edp.cef.generator.overall.Utils;
//import com.inspur.edp.das.commonmodel.IGspCommonObject;
//import java.util.Arrays;
//import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
//
//public class BEAssFactoryImplGenerator extends ClassGenerator {
//
//  // region Static Members
//  private static final String name = "BEActionAssemblerFactory";
//
//  // region Basic Info
//  private BefCoreGenCtx coreGenCtx;
//  private GspBizEntityObject beObject;
//  private boolean isRoot;
//
//  public BEAssFactoryImplGenerator(
//      BefCoreGenCtx coreGenCtx, GspBizEntityObject beObject, boolean isRoot) {
//    super(coreGenCtx.getCompilationUnitInfo());
//    this.coreGenCtx = coreGenCtx;
//    this.beObject = beObject;
//    this.isRoot = isRoot;
//    coreGenCtx
//        .getBEActionAssFactoryImplTypes()
//        .put(beObject.getCode(), new MediateType(compileUnit.getPackageName(), getName()));
//  }
//
//  public static String getClassName(IGspCommonObject cmObject) {
//    return cmObject.getCode() + name;
//  }
//
//  @Override
//  protected ClassGeneratorContext createClassInfoContext() {
//    return new ClassGeneratorContext();
//  }
//
//  @Override
//  protected java.util.ArrayList<ModifierKeyword> getAccessModifier() {
//    java.util.ArrayList<ModifierKeyword> result = new java.util.ArrayList<ModifierKeyword>(1);
//    result.add(ModifierKeyword.PUBLIC_KEYWORD);
//    return result;
//  }
//
//  @Override
//  protected String getName() {
//    return getClassName(beObject);
//  }
//
//  @Override
//  protected TypeInfo setParentClass() {
//    return new TypeInfo(AbstractActionAssemblerFactory.class);
//  }
//  // endregion
//
//  // new List<Type> {
//  // coreGenCtx.getBeGenCtx().EntityAssemblerFactoryInterfaceTypes[beObject.getCode()] };
//
//  @Override
//  protected java.util.ArrayList<TypeInfo> addParentInterfaces() {
//    MediateType type = ApiHelper.getBEAssFactoryInterfaceClassName(beObject);
//    TypeInfo result = new TypeInfo(type.getClassName());
//    result.setTypePackageName(type.getNamespace());
//    return new java.util.ArrayList<TypeInfo>(Arrays.asList(result));
//  }
//  // endregion
//
//  // region ChildGen
//  @Override
//  protected java.util.ArrayList<ClassMethodGenerator> createMethodGenerators() {
//    java.util.ArrayList<ClassMethodGenerator> rez = new java.util.ArrayList<ClassMethodGenerator>();
//    for (BizOperation action : beObject.getBizActions()) {
//      if (!authorityChanged((BizAction) action)) {
//        continue;
//      }
//
//      if (action instanceof IInternalBEAction) {
//        if (isRoot) {
//          rez.add(new InternalBEActionMethodImplGenerator(coreGenCtx, (BizAction) action));
//        }
//      } else {
//        rez.add(new CustomBEActionMethodImplGenerator(coreGenCtx, (BizAction) action));
//      }
//    }
//    // TODO: java版临时注释  默认值优先级低
//    //		if (isRoot)
//    //		{
//    //			rez.add(new DefaultValueProccessorMethodGenerator(coreGenCtx));
//    //		}
//    return rez;
//  }
//
//  private boolean authorityChanged(BizAction action) {
//    return true;
//  } // TODO: 元数据支持扩展时完善
//
//  // endregion
//}
